{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## _*H2 ground state energy computation using Iterative QPE*_\n",
    "\n",
    "This notebook demonstrates computing and graphing the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using `IQPE` (Iterative Quantum Phase Estimation) algorithm. It is compared to the ground-truth energies as computed by the `NumPyMinimumEigensolver`.\n",
    "\n",
    "This notebook has been written to use the PYSCF chemistry driver. See the PYSCF chemistry driver readme if you need to install the external PySCF library that this driver requires.\n",
    "\n",
    "First we define the `compute_energy` method, which contains the H2 molecule definition as well as the computation of its ground energy given the desired `distance` and `algorithm` (`i` is just a helper index for parallel computation to speed things up)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pylab\n",
    "import time\n",
    "import numpy as np\n",
    "import multiprocessing as mp\n",
    "from qiskit import BasicAer\n",
    "from qiskit.aqua import QuantumInstance, AquaError\n",
    "from qiskit.aqua.operators import Z2Symmetries, op_converter\n",
    "from qiskit.aqua.algorithms import IQPE, NumPyMinimumEigensolver\n",
    "from qiskit.chemistry import FermionicOperator\n",
    "from qiskit.chemistry.components.initial_states import HartreeFock\n",
    "from qiskit.chemistry.drivers import PySCFDriver, UnitsType\n",
    "\n",
    "def compute_energy(i, distance, algorithm):\n",
    "    try:\n",
    "        driver = PySCFDriver(\n",
    "            atom='H .0 .0 .0; H .0 .0 {}'.format(distance),\n",
    "            unit=UnitsType.ANGSTROM,\n",
    "            charge=0,\n",
    "            spin=0,\n",
    "            basis='sto3g'\n",
    "        )\n",
    "    except:\n",
    "        raise AquaError('PYSCF driver does not appear to be installed')\n",
    "    molecule = driver.run()\n",
    "    qubit_mapping = 'parity'\n",
    "    fer_op = FermionicOperator(h1=molecule.one_body_integrals, h2=molecule.two_body_integrals)\n",
    "    qubit_op = Z2Symmetries.two_qubit_reduction(\n",
    "        op_converter.to_weighted_pauli_operator(fer_op.mapping(map_type=qubit_mapping, threshold=1e-10)), 2)\n",
    "\n",
    "    if algorithm == 'NumPyMinimumEigensolver':\n",
    "        eigensolver = NumPyMinimumEigensolver(qubit_op)\n",
    "        result = eigensolver.run()\n",
    "        reference_energy = result.eigenvalue.real\n",
    "    elif algorithm == 'IQPE':\n",
    "        num_particles = molecule.num_alpha + molecule.num_beta\n",
    "        two_qubit_reduction = True\n",
    "        num_orbitals = qubit_op.num_qubits + (2 if two_qubit_reduction else 0)\n",
    "\n",
    "        num_time_slices = 1\n",
    "        num_iterations = 12\n",
    "        state_in = HartreeFock(num_orbitals,\n",
    "                               num_particles, qubit_mapping, two_qubit_reduction)\n",
    "        iqpe = IQPE(qubit_op, state_in, num_time_slices, num_iterations,\n",
    "                    expansion_mode='trotter', expansion_order=1,\n",
    "                    shallow_circuit_concat=True)\n",
    "        backend = BasicAer.get_backend('statevector_simulator')\n",
    "        quantum_instance = QuantumInstance(backend)\n",
    "\n",
    "        result = iqpe.run(quantum_instance)\n",
    "    else:\n",
    "        raise AquaError('Unrecognized algorithm: {}'.format(algorithm))\n",
    "    return i, distance, result.eigenvalue.real + molecule.nuclear_repulsion_energy, molecule.hf_energy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next we set up the experiment to compute H2 ground energies for a range of inter-atomic distances, in parallel."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " --- complete\n",
      "Distances:  [0.5   0.525 0.55  0.575 0.6   0.625 0.65  0.675 0.7   0.725 0.75  0.775\n",
      " 0.8   0.825 0.85  0.875 0.9   0.925 0.95  0.975 1.   ]\n",
      "Energies: [[-1.04301318 -1.06320142 -1.08046604 -1.09428928 -1.10410788 -1.11248618\n",
      "  -1.11870203 -1.12203285 -1.12480205 -1.12619329 -1.12540821 -1.12460086\n",
      "  -1.12291101 -1.12045975 -1.11735113 -1.11367463 -1.10950729 -1.10491566\n",
      "  -1.10086038 -1.095576   -1.09090328]\n",
      " [-1.05515979 -1.07591366 -1.09262991 -1.10591805 -1.11628601 -1.12416092\n",
      "  -1.12990478 -1.13382622 -1.13618945 -1.13722138 -1.13711707 -1.13604436\n",
      "  -1.13414767 -1.13155121 -1.12836188 -1.12467175 -1.12056028 -1.11609624\n",
      "  -1.11133942 -1.10634211 -1.10115033]]\n",
      "Hartree-Fock energies: [-1.04299627 -1.06306214 -1.07905074 -1.0915705  -1.10112824 -1.10814999\n",
      " -1.11299655 -1.11597526 -1.11734903 -1.11734327 -1.11615145 -1.11393966\n",
      " -1.1108504  -1.10700581 -1.10251055 -1.09745432 -1.09191404 -1.08595587\n",
      " -1.07963693 -1.07300676 -1.06610865]\n",
      "--- 186.6669979095459 seconds ---\n"
     ]
    }
   ],
   "source": [
    "import concurrent.futures\n",
    "import multiprocessing as mp\n",
    "\n",
    "algorithms = ['IQPE', 'NumPyMinimumEigensolver']\n",
    "start = 0.5  # Start distance\n",
    "by    = 0.5  # How much to increase distance by\n",
    "steps = 20   # Number of steps to increase by\n",
    "energies = np.empty([len(algorithms), steps+1])\n",
    "hf_energies = np.empty(steps+1)\n",
    "distances = np.empty(steps+1)\n",
    "\n",
    "start_time = time.time()\n",
    "max_workers = max(4, mp.cpu_count())\n",
    "with concurrent.futures.ProcessPoolExecutor(max_workers=max_workers) as executor:\n",
    "    futures = []\n",
    "    for j in range(len(algorithms)):\n",
    "        algorithm = algorithms[j]\n",
    "        for i in range(steps+1):\n",
    "            d = start + i*by/steps\n",
    "            future = executor.submit(\n",
    "                compute_energy, \n",
    "                i, \n",
    "                d, \n",
    "                algorithm\n",
    "            )\n",
    "            futures.append(future)\n",
    "        for future in concurrent.futures.as_completed(futures):\n",
    "            i, d, energy, hf_energy = future.result()\n",
    "            energies[j][i] = energy\n",
    "            hf_energies[i] = hf_energy\n",
    "            distances[i] = d\n",
    "        \n",
    "print(' --- complete')\n",
    "\n",
    "print('Distances: ', distances)\n",
    "print('Energies:', energies)\n",
    "print('Hartree-Fock energies:', hf_energies)\n",
    "\n",
    "print(\"--- %s seconds ---\" % (time.time() - start_time))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally we plot the results:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pylab.plot(distances, hf_energies, label='Hartree-Fock')\n",
    "for j in range(len(algorithms)):\n",
    "    pylab.plot(distances, energies[j], label=algorithms[j])\n",
    "pylab.xlabel('Interatomic distance')\n",
    "pylab.ylabel('Energy')\n",
    "pylab.title('H2 Ground State Energy')\n",
    "pylab.legend(loc='upper right')\n",
    "pylab.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pylab.plot(distances, np.subtract(hf_energies, energies[1]), label='Hartree-Fock')\n",
    "pylab.plot(distances, np.subtract(energies[0], energies[1]), label='IQPE')\n",
    "pylab.xlabel('Interatomic distance')\n",
    "pylab.ylabel('Energy')\n",
    "pylab.title('Energy difference from NumPyMinimumEigensolver')\n",
    "pylab.legend(loc='upper right')\n",
    "pylab.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
